//
// Created by einsc on 2025/5/27.
//\
#include <stdio.h>
#include <stdbool.h>
#define MaxSize 100
//定义数据元素类型
typedef int ElemType;

//定义顺序表类型
typedef struct {
    ElemType data[MaxSize];
    int length;
}SqList;
// 初始化顺序表
void InitList(SqList *L) {
    L->length = 0;  // 将顺序表长度初始化为0
}
// 在指定位置插入元素
bool ListInsert(SqList *L, int i, ElemType e) {
    // 判断位序i是否合法（1~length+1）
    if (i < 1 || i > L->length + 1) {
        return false;
    }
    // 判断顺序表是否已满
    if (L->length >= MaxSize) {
        return false;
    }
    // 将第i个位置及之后的元素后移
    for (int j = L->length; j >= i; j--) {
        L->data[j] = L->data[j-1];
    }
    L->data[i-1] = e;  // 在第i个位置插入元素
    L->length++;       // 顺序表长度加1
    return true;
}

// 删除指定位置的元素
bool ListDelete(SqList *L, int i, ElemType *e) {
    // 判断位序i是否合法（1~length）
    if (i < 1 || i > L->length) {
        return false;
    }
    *e = L->data[i-1];  // 保存被删除的元素
    // 将第i+1个位置及之后的元素前移
    for (int j = i; j < L->length; j++) {
        L->data[j-1] = L->data[j];
    }
    L->length--;  // 顺序表长度减1
    return true;
}

